﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace NEGOCIOS
{
    class AccionesServidorSobreMensaje
    {
        public MailServer MailServer
        {
            get
            {
                throw new System.NotImplementedException();
            }
            set
            {
            }
        }
    
        public static void post(Message objMessage, ListaClientesRegistrados ListaClientesRegistrados)
        {
            for (int i = 0; i < ListaClientesRegistrados.Count_ListaClientesRegistrados(); i++)
            {
                MailCliet NombreCliente = ListaClientesRegistrados.ElementAt_listaMailClientRegistragos(i);
                string destinatario = objMessage.SeleccionarDestinatario();
                AccionesServidor.CompararyAgregarMensajeCliente(ListaClientesRegistrados, NombreCliente, destinatario, i, objMessage);
            }
        }
        public static int getMessagesWaiting(string name, ListaMensajesServidor ListaMensajesServidor)
        {
            int contador = 0;
            for (int i = 0; i < ListaMensajesServidor.Count_ListaClientesRegistrados(); i++)
            {
                Message Message = ListaMensajesServidor.ElementAt_listaMailClientRegistragos(i);
                string destinatario = Message.SeleccionarDestinatario();
                contador = AccionesServidor.CompararNombresInt(destinatario, name) + contador;
            }
            return contador;
        }
        public static Message getNextMessage(string name, ListaMensajesServidor ListaMensajesServidor, ListaClientesRegistrados ListaClientesRegistrados)
        {
            Message mensajeDevolver = null;
            for (int i = 0; i < ListaMensajesServidor.Count_ListaClientesRegistrados(); i++)
            {
                Message Message = ListaMensajesServidor.ElementAt_listaMailClientRegistragos(i);
                string destinatario = Message.SeleccionarDestinatario();
                mensajeDevolver = RealizarPostMensaje(destinatario, name, i, ListaMensajesServidor, ListaClientesRegistrados);
            }
            return mensajeDevolver;
        }
        private static Message RealizarPostMensaje(string nombreCompararLista, string nombreCompararParametro, int posicion, ListaMensajesServidor ListaMensajesServidor, ListaClientesRegistrados ListaClientesRegistrados)
        {
            if (nombreCompararLista.Equals(nombreCompararParametro))
            {
                Message mensaje = ListaMensajesServidor.ElementAt_listaMailClientRegistragos(posicion);
                ListaMensajesServidor.RemoveAt_listaMailClientRegistragos(posicion);
                AccionesServidor.post(mensaje, ListaClientesRegistrados);
                return mensaje;
            }
            return null;
        }
    }
}
